This invention relates to the field of data processing systems. More particularly, this invention relates to how a next instruction to be executed may be specified within a data processing system.
It is known to provide data processing systems which execute a sequence of program instructions from a thread of program instruction for execution. Within such systems, instruction prefetching circuitry and branch prediction circuitry may be used to prefetch instructions to be executed and to predict the flow of execution when branches are encountered such that a processing pipeline can be supplied with new instructions to be executed before a branch instruction has been resolved. These measures are effective in enabling deep processing pipelines to be supported and utilised with high efficiency. However, the overhead in terms of circuit area, circuit complexity, power consumption and expense associated with these mechanisms is becoming increasingly significant.
It is also known to provide data processing systems which concurrently execute multiple program threads. An example of such systems are graphics processing units in which, for example, more than a hundred program threads may execute in parallel, each program thread corresponding to a different part of a graphics image being processed. The known mechanisms for instruction prefetching and branch prediction do not scale well to such systems. The overhead associated with these mechanisms when seeking to prefetch instructions for a large number of separate threads as well as to predict branch behaviour for this large number of program threads is disadvantageous. However, simply waiting until a program instruction being executed completes and then fetching the next instruction incurs a significant prefetch latency. This disadvantage is also becoming more significant as the use of systems executing a large number of parallel threads becomes more widespread and applied to more general purpose processing (beyond the field of graphics processing) where the prefetch latency becomes more apparent.